利用可能なコード一覧

※仕様は変更されることがあります

数値は全て16進数で表記してください。数値は符号無しで解釈されます(負数は使えません)。
オフセットの初期値は0です。オフセットは負の値をとることができます。
特に注記がない限り、オフセットの値はコードの動作に関係しません。
指定されたアドレスが領域の範囲外の場合の動作は未定義です。

セクション単純書き込みコードを除いて、アドレスはヘッダの部分を含みます。
Yo-kai Editor B2のバイナリエディタでは、セーブデータのヘッダ部分、
およびセクションのヘッダとフッタが表示されませんので、
コードで用いるアドレスとは一致しません。コードを作成する場合は、
セクション単純書き込みを使うか、「復号済みファイルを保存」し、
別のバイナリエディタでセーブデータを開いてください。

アドレス0から0x1Fまでの0x20バイトの領域には書き込みできません。

行頭に#を置くと、その行は無視されます。

1. 単純書き込み
指定されたアドレスに指定された値を書き込みます。
0XYYYYYY 000000ZZ (1バイト)
1XYYYYYY 0000ZZZZ (2バイト)
2XYYYYYY ZZZZZZZZ (4バイト)
先頭の数字によって、書き込むデータZのサイズを指定します。
Yはデータを書き込むアドレスです。Xには0か8を指定します。
Xが8のとき、実際に書き込むアドレスは Y+オフセット になります。

2. セクション単純書き込み
指定されたセクション中で単純書き込みを行います。アドレスは、ちょうど
Yo-kai Editor B2のバイナリエディタで該当セクションを開いたときのものと一致します。
先頭に@を付けることに注意してください。
@0XXYYYYY 000000ZZ (1バイト)
@1XXYYYYY 0000ZZZZ (2バイト)
@2XXYYYYY ZZZZZZZZ (4バイト)
@に続く数字によって、書き込むデータZのサイズを指定します。
Xはセクション番号、Yはデータを書き込むアドレスです。

3. ループ
指定されたアドレス・値を起点に、複数回繰り返し書き込みます。
4XYYYYYY UZZZWWWW
SSSSSSSS TTTTTTTT

Uの値によって書き込むデータのサイズを指定します。
2で1バイト、1で2バイト、0で4バイトになります。
(単純書き込みとは逆なので注意してください)
Sは書き込むデータの初期値、Tは書き込むデータの増分です。
Zは繰り返しの回数、Wは書き込むアドレスの差分です。
Yはデータを書き込むアドレスです。Xには0か8を指定します。
Xが8のとき、実際に書き込むアドレスは Y+オフセット+差分 になります。

4. ビット毎の論理和
指定したアドレスの値と指定した値の論理和をとり、同じアドレスに書き込みます。
70XYYYYY 000000ZZ (1バイト)
71XYYYYY 0000ZZZZ (2バイト)
72XYYYYY ZZZZZZZZ (4バイト)
先頭の数字によって、論理和をとるデータZのサイズを指定します。
Yは論理和をとる値のあるアドレスです。Xには0か8を指定します。
Xが8のとき、実際に書き込むアドレスは Y+オフセット になります。

5. 検索
指定された値を検索します。その値が存在すれば、
その直後の位置を新しいオフセットに設定します。
存在しない場合は何もしません。
8XXXYYYY ZZZZZZZZ
ZZZZZZZZ ZZZZZZZZ
...
Xは、何回目に出現するものを検索するか指定します。Xが0ならば何もしません。
Yは検索する値Zのサイズ(バイト)です。「8桁 8桁」という書式に満たない部分があれば、
適当な文字で埋めてください。

例えば 12 34 56 というバイト列を検索する場合は
80010003 00563412
同様に、01 23 45 67 89 AB CD EF ならば
80010008 67452301
EFCDAB89 00000000
とします。

6. オフセット減算
93000000 XXXXXXXX
現在のオフセットからXを減じます。

7. セクションオフセット
@section セクション番号
現在のオフセットに、指定されたセクションの先頭を設定します。
セクション番号には、0x01 のような16進数表記、および通常の10進数表記が使えます。
指定されたセクションが存在しない場合は、このコードは何もしません。
